home *** CD-ROM | disk | FTP | other *** search
- #define NAME "testFilePack"
- #define REVISION "0"
- #define ENDCODE_NOCTRLC
-
- /* Programmheader
-
- Name: testFilePack
- Author: SDI
- Distribution: PD
- Description: easy file to file packer
- Compileropts: -
- Linkeropts: -l xpkmaster amiga
-
- 1.0 06.01.97 : wrote to find the read bit error
- */
-
- #include <pragma/exec_lib.h>
- #include <pragma/dos_lib.h>
- #include <pragma/xpkmaster_lib.h>
- #include <exec/memory.h>
- #include "SDI_defines.h"
-
- #ifdef __MAXON__
- #define __asm
- #define __saveds
- #endif
-
- struct Library *XpkBase = 0;
- ULONG DosVersion = 37;
- struct RDArgs *rda = 0;
-
- #define PARAM "FROM/A,TO/A,METHOD"
-
- LONG __asm __saveds chunkfunc(register __a1 struct XpkProgress *prog)
- {
- switch(prog->xp_Type)
- {
- case XPKPROG_START: PutStr("Start: "); break;
- case XPKPROG_MID: PutStr("\rMid : "); break;
- case XPKPROG_END: PutStr("\rEnd : "); break;
- }
-
- if(prog->xp_Type != XPKPROG_END)
- Printf("%4s: %-8s (%3ld%% done, %2ld%% CF, %6ld cps) %s",
- prog->xp_PackerName, prog->xp_Activity, prog->xp_Done,
- prog->xp_CF, prog->xp_Speed, prog->xp_FileName);
- else
- Printf("%4s: %-8s (%3ldK, %2ld%% CF, %6ld cps) %s\033[K\n",
- prog->xp_PackerName, prog->xp_Activity, prog->xp_ULen >> 10,
- prog->xp_CF, prog->xp_Speed, prog->xp_FileName);
-
- Flush(Output());
- return (LONG) SetSignal(0, SIGBREAKF_CTRL_C) & SIGBREAKF_CTRL_C;
- }
-
- struct Hook chunkhook = { {0}, (ULONG (*)()) chunkfunc};
-
- void main(void)
- {
- UBYTE errbuf[XPKERRMSGSIZE+1];
- struct {
- STRPTR from;
- STRPTR to;
- STRPTR method;
- } args = {0,0,0};
-
- if(!(rda = ReadArgs(PARAM, (LONG *) &args, 0)) ||
- !(XpkBase = OpenLibrary(XPKNAME, 3)))
- End(RETURN_FAIL);
-
- if(XpkPackTags(XPK_InName, args.from, XPK_OutName, args.to,
- XPK_PackMethod, args.method, XPK_GetError,
- errbuf, XPK_ChunkHook, &chunkhook, TAG_DONE))
- {
- STRPTR a = errbuf;
- VPrintf("Can't XpkPack: %s\n", &a);
- End(RETURN_FAIL);
- }
-
- End(RETURN_OK);
- }
-
-
- void end(void)
- {
- if(XpkBase) CloseLibrary(XpkBase);
- if(rda) FreeArgs(rda);
- }
-
-